home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
ra
/
frmv21.zip
/
FREMOVE.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1994-05-17
|
9KB
|
224 lines
Program FileRemover; {FileRemover v2.1}
Uses Dos,Crt;
Type
FlagType = array[1..4] of Byte;
FILESrecord = record
Unused : Array[1..4] of Byte;
Name : String[40];
Attrib : Byte;
FilePath : String[40];
KillDaysDL,
KillDaysFD : Word;
Password : String[15];
MoveArea : Word;
Age,
ConvertExt : Byte;
Group : Word;
Attrib2 : Byte;
DefCost,
UploadArea,
UploadSecurity : Word;
UploadFlags,
UploadNotFlags : FlagType;
Security : Word;
Flags,
NotFlags : FlagType;
ListSecurity : Word;
ListFlags,
ListNotFlags : FlagType;
AltGroup : Array[1..3] of Word;
Device : Byte;
FreeSpace : Array[1..13] of Byte;
End;
Procedure Exit(G:String); {Halting Procedure}
Begin
writeln(g);
halt;
End;
Const
UnreadOnly : Byte=$FE;
NotFirst : Boolean=False;
Prog : String='FileRemover';
Ver : String='v2.1';
Typ : String='Freeware';
By : String='Yair Softwares';
Var
F,G : Text;
FMask,FName,T : String[12];
Em : String[2];
FN : Namestr;
EN : Extstr;
DS : Dirstr;
DT,OT : Datetime;
SRec : Searchrec;
NewF : String[12];
OldF : Array [1..1000] of String[12];
AreaI : Array [1..200] of Integer;
AreaF : File of Filesrecord;
Area : Filesrecord;
NoFile,Ign : Boolean;
Match,Ex,Pr : Boolean;
I,A,B,Res,C,D,E : Integer;
St,Ft : String;
Attr : Word;
Fl : File;
Begin
Textcolor(7);
Textbackground(0);
Writeln(Prog,' ',ver,' by ',by,' (',typ,')');
Writeln;
I:=0;
If Paramcount<>1 then Exit('No FileMask Specified...');
FMask:=Paramstr(1);
Assign(F,'AREAS.IGN');
{$I-}Reset(F);{$I+}
Res:=IOResult;
If (Res<>0) and (Res<>2) then Exit('Error reading Ignored Areas List...');
d:=0;
If Res=0 then
Repeat
Readln(F,St);
d:=d+1;
Val(St,AreaI[d],e);
Until Eof(F);
If Res=0 then Close(f);
Filemode:=0 + $40;
Assign(AreaF,Getenv('RA')+'\FILES.RA');
{$I-}Reset(AreaF);{$I+}
Filemode:=2;
If IOResult<>0 then Exit('Error reading FILES.RA ...');
c:=0;
Repeat
{$I-}Read(AreaF,Area);{$I+}
If IOResult<>0 then Exit('Error reading FILES.RA ...');
c:=c+1;
writeln;
write('Area ',c,': ',area.name);
Pr:=True;
For e:=1 to d do If C=AreaI[E] then Pr:=False;
If Pr then
Repeat
Nofile:=False;
Findfirst(Area.Filepath+'\'+FMask,Anyfile,Srec);
If Doserror<>0 then NoFile:=True;
While Doserror=0 do
Begin
With Srec do
Begin
Unpacktime(Time,DT);
With dt do
Begin
Match:=False;
If Notfirst then
Begin
If Dt.Year>Ot.Year then Match:=True
Else If Dt.Year=Ot.Year
Then If Dt.Month>Ot.Month then Match:=True
Else If Dt.Month=Ot.Month
Then If Dt.Day>Ot.Day then Match:=True
Else If Dt.Day=Ot.Day
Then If Dt.Hour>Ot.Hour then Match:=True
Else If Dt.Hour=Ot.Hour
Then If Dt.Min>Ot.Min then Match:=True
Else If Dt.Min=Ot.Min
Then If Dt.Sec>Ot.Sec then Match:=True;
End
Else Match:=True;
If Match then
Begin
If Notfirst then I:=I+1;
If Notfirst then OldF[I]:=NewF;
Ot:=Dt;
FSplit(name,DS,FN,EN);
NewF:=FN+EN;
End
Else
Begin
I:=I+1;
FSplit(name,DS,FN,EN);
OldF[I]:=FN+EN;
End;
End;
End;
Findnext(Srec);
Notfirst:=True;
End;
Ign:=False;
Until Doserror<>0
Else
Begin
Nofile:=True;
write(' - Area Ignored');
Ign:=True;
End;
If not Ign then
If Not NoFile then
Begin
Assign(F,Area.Filepath+'\FILES.BBS');
{$I-}Reset(F);{$I+}
If IOResult<>0 then Exit('Error reading '+Area.Filepath+'\FILES.BBS ...');
Assign(G,Area.Filepath+'\FILES.$$$');
{$I-}Reset(G);{$I+}
If IOResult=0 then Erase(G);
Rename(F,Area.Filepath+'\FILES.$$$');
Assign(F,Area.Filepath+'\FILES.$$$');
Reset(F);
Assign(G,Area.Filepath+'\FILES.BBS');
Rewrite(G);
Repeat
Readln(F,St);
T:=' ';
T:=st;
FName:='';
For a:=1 to 12 do if T[A]<>' ' then Fname:=Fname+T[a];
Ex:=False;
For a:=1 to i do If Fname=OldF[a] then Ex:=True;
If Ex then
Begin
writeln;
Write('Erasing ',fname,' from FILES.BBS');
Repeat
Readln(F,St);
Em:=St;
Until (Em<>' +') and (Em<>'+ ');
End;
Writeln(G,st);
Until EOF(F);
Close(F);
Close(g);
B:=0;
While B<>I do
Begin
B:=b+1;
Assign(Fl,Area.Filepath+'\'+OldF[B]);
{$I-}Reset(Fl);{$I+}
Res:=IOResult;
Case Res of
0:
Begin
Erase(Fl);
Writeln;
Write(OldF[B],' Erased...');
End;
5:
Begin
Assign(Fl,Area.Filepath+'\'+OldF[B]);
GetFattr(Fl,Attr);
SetFAttr(Fl,Attr and Unreadonly);
Assign(Fl,Area.Filepath+'\'+OldF[B]);
Reset(Fl);
Erase(Fl);
Writeln;
Write(OldF[B],' Erased...');
End;
End
End;
End
Else write(' - No files Found...');
Until EOF(AreaF);
Close(AreaF);
writeln;
writeln;
writeln(prog,' ',ver,' - DONE!');
end.